home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
enigma
/
earcd
/
comm
/
comm1
/
ws-sh26.lha
/
WarpSearch_shell.doc
< prev
next >
Wrap
Text File
|
1996-10-30
|
7KB
|
198 lines
WarpSearch_Shell V2.6 Documentation
Introduction
------------
This is the shell version of WarpSearch.
It uses the boyer-moore search algorithm implemented in assembler code.
This algorithm is the fastest available.
Revision History
----------------
Features
--------
V1.0:
-pattern matching
-asynchonous I/O
-backwards/forwards counting of filelists
-highlightning
V2.0:
-now real reverse search (search code / buffer loading / dir counting)
-residentable
-DMA optimized
-prompts always behind complete descriptions
-simple flagging, also "f file1.lha f file2.lha"
-ndirs file is used to be s-express compatible if no ndirs tooltype exists
-colors for the description output
-configurable via tooltypes (of the WarpSearch executable) or WarpSearch.config file
tooltypes override file config
V2.1:
-bugfixed V2.0
If there were escape codes in the text of a file description the line was
repeated in an infinite loop but you were able to quit the program at the
prompt. No memory trashes or similar occured. This is fixed now. A harmless
byte read from adress 0 in the shell version was wiped out too.
V2.3:
-added prompts if no args at start specified in bbs version
-speedup due to asm code improvement and faster resource allocations (unbelieveable but true)
-wildcard problem fixed
-help rewritten
V2.6:
-no-prompts-feature in config file
-replaced dirx with full path in config (you can easily search through aminet filelists now)
-replaced ns with s in prompt
-faster code due to optimized initialisation of load buffers
-changed date to amigadate
Installation
------------
Copy WarpSearch_Shell and WarpSearch_Shell.config to the same directory.
You may rename it to have versions with different configs e.g.
ws and ws.config
will work too.
Adjust configuration paths.
Usage
-----
compatible to /X z door with enhancements
z <pattern> <filelist#> <+/-/r>
Example usage:
"z foo" (searches in upload dir for "foo" forwards).
"z foo r" (searches in upload dir reverse).
"z foo 3 r" (searches in dir3 reverse).
"z foo a +" (searches from dir1 up for "foo").
"z foo a -" (searches from upload dir down for "foo").
"z foo 2 +" (searches from dir2 up for "foo").
"z foo 1" (searches dir1 only for "foo").
Wildcards in pattern are allowed, like "z foo*bar" or "z warp*V1.0*"
Use "z foo*bar 2 +" to search from dir2 upwards. Default is downwards search.
The pattern must match an expression in one line.
Patterns are not case sensitive. Only "*" is accepted as a wildcard and no
other constructions like "#?","?" , which noone needs anyway in this application.
Use "z ?" for short help.
Info
----
Due to the boyer-moore algorithm the longer the pattern (w/o wildcards)
the shorter the search time.
The complete filedescription including filename etc. is searched through.
We, the authors, think that this magic code is the fastest search routine ever
made for an /X like filelist, because the 100% assembler boyer-moore search
routine with pattern matching and highlightning is optimized for cpu cycles by
hand, some magic is done for splitted filedescriptions, asychronous I/O
optimized even for 68040. (cache flushing problem)
On our system the bottleneck is the Fast-SCSI-II Baracuda drive with a
Fast-SCSI-II CyberSCSI Controller that does 7MB/s, and the code is 3 times
faster if the filelist is in RAM with 50MB/s burst.
The maximum length of a description line allowed is 1000 chars. Since /X
allows 80 chars/line as maximum we think this is no bug. If a line is longer
than 1000 chars enforcer hits may occur. A check for line length would slow
down the code significantly. That`s why we don`t do it.
For those who are interested, a short explanation of what "double buffered
async I/O" means:
Due to the coolness of the Amiga, SCSI is the most accepted standard on this
platform (..well if we dont consider 4000 desktops..). SCSI has the ability
to transfer data per DMA, thus meaning without using the processor. This is
were async I/O comes in. A program using double buffered async I/O lets the
filesystem first fill up one buffer, then sends the request to fill up the
second buffer, and while the HD is busy transfering data to the 2nd buffer the
processor is free to do its work on the first one. As you can imagine this
technique dramatically speeds up the whole process.
Shell version now included.
A pseudo door that calls the door to be debugged is now developed. This way you
can use SAS/C`s debugger cpr easily. If you need it just ask.
Send your suggestions or bug reports to crayor@cs.tu-berlin.de or
dres@cs.tu-berlin.de.
Reverse search is quite slow, because the seeking in the filelist (which is
even asynchronous) takes 87% of the execution time on Crayor`s system (060&
CyberScsi). Use a cache program like DynamiCache V1.02 by Christopher A. Wolf
with big memory values to make reverse search as fast as forwards search.
Maybe a scsi RAID system could be a good solution for reverse searching too,
if you have one please contact Crayor!
For the Amiga a "mini raid system" for 2 equal drives is available. If you have
this please contact Crayor. It seems to be software transparent and looks like
just one scsi drive as I was told. This should almost double average transfer
speeds.
Memory Requirements
-------------------
Approx. 2*blocksize*100 bytes which is about 100k for load buffers plus 20k
for print buffer plus code size
(blocksize is usually 512 bytes)
Shell Version
-------------
The shell version needs a config file with the name
progdir:<executable_name>.config
This way you can have several instances of WarpSearch_shell with different
names for your filelist collections.
So rename the shell version for example to:
TFuckup! and the config file to TFuckup!.config and
DeathRow and the config file to DeathRow.config
and you can search in two filelist collections, one for each bbs.
Look at the example file "WarpSearch_shell.config" for the construction of
the config files.
Remember that characters like ´+´ have special meanings in the shell so use
" to override these special meanings e.g. "+".
If you hit return while not beeing at a prompt the output will be wired
ofcoz.
Greetz
------
Some hellos to the following guys:
"Ibo" - with his always busy or down BBS, so that we weren`t able to abuse
his BBS for beta testing ;)
Hijack - thx for the cool name of this door m8. (yep! "WarpSearch" actually was
his idea)
SCSI - for his help on using iwan.device and other help
Amok - for the address of Mr.F
STC - for the competition of coding the fastest search code for /X filelists
Hydra - for still developing hbbs
Dave Haynie
- for answering my several emails
The Baron (Mats N.)
- for reporting the (minor!?) esc-code bug in V2.0 that leeded to V2.1
shadower (M. R. T.)
- for some good suggestions for V2.1
Looking for good beta testers!
Cool MUI and AmiExpress BBS versions are available. Check the aminet! /comm/amiex